package com.sunyur.tailor.channel.service.outer.keep.param;

import com.alibaba.fastjson.annotation.JSONType;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

/**
 * SRM采购申请发至飞书进行审批 参数
 */

@Data
@JSONType(orders={"approval_code","open_id","form"})
public class SRMPurchaseFeishuForApprovalParam {


    /**
     *
     * 审批定义 code
     *
     * 示例值："7C468A54-8745-2245-9675-08B7C63E7A85"
     */
    @JsonProperty("approval_code")
    private String approval_code;

    /**
     * 发起审批用户
     *
     * 示例值："f7cb567e"
     */
    @JsonProperty("user_id")
    private String user_id;

    /**
     *
     * 发起审批用户 open id, 如果传了 user_id 则优先使用 user_id
     *
     * 示例值："ou_3cda9c969f737aaa05e6915dce306cb9"
     */
    @JsonProperty("open_id")
    private String open_id;

    /**
     * 发起审批用户部门id，如果用户只属于一个部门，可以不填。如果属于多个部门，默认会选择部门列表第一个部门
     *
     * 示例值："9293493ccacbdb9a"
     */
    @JsonProperty("department_id")
    private String department_id;

    /**
     *
     * json 数组，控件值
     *
     * 示例值："[{"id":"111", "type": "input", "value":"test"}]"
     */
    private String form;

    /**
     * 如果有发起人自选节点，则需要填写对应节点的审批人
     */
    @JsonProperty("node_approver_user_id_list")
    private List<FeishuForApprovalItemParam> node_approver_user_id_list;

    /**
     * 审批人发起人自选 open id，与上述node_approver_user_id_list字段取并集
     */
    @JsonProperty("node_approver_open_id_list")
    private List<FeishuForApprovalItemParam> node_approver_open_id_list;

    /**
     *
     * 如果有发起人自选节点，则可填写对应节点的抄送人，单个节点最多选择20位抄送人
     */
    @JsonProperty("node_cc_user_id_list")
    private List<FeishuForApprovalItemParam> node_cc_user_id_list;

    /**
     * 抄送人发起人自选 open id 单个节点最多选择20位抄送人
     */
    @JsonProperty("node_cc_open_id_list")
    private List<FeishuForApprovalItemParam> nodeCcOpenIdList;

    /**
     *
     * 审批实例 uuid，用于幂等操作, 每个租户下面的唯一key，同一个 uuid 只能用于创建一个审批实例，如果冲突，返回错误码 60012 ，格式建议为 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX，不区分大小写
     *
     * 示例值："7C468A54-8745-2245-9675-08B7C63E7A87"
     */
    private String uuid;

    @Override
    public String toString() {
        return "SRMPurchaseFeishuForApprovalParam{" +
                "approval_code='" + approval_code + '\'' +
                ", user_id='" + user_id + '\'' +
                ", open_id='" + open_id + '\'' +
                ", department_id='" + department_id + '\'' +
                ", form='" + form + '\'' +
                ", node_approver_user_id_list=" + node_approver_user_id_list +
                ", node_approver_open_id_list=" + node_approver_open_id_list +
                ", node_cc_user_id_list=" + node_cc_user_id_list +
                ", nodeCcOpenIdList=" + nodeCcOpenIdList +
                ", uuid='" + uuid + '\'' +
                '}';
    }
}
